package day26.homework;

public class Return1 { 
    public static void main(String[] args) { 
        // 调用testReturn1方法并将返回值赋给变量i
        int i = new Return1().testReturn1(); 
        // 打印最终返回的结果
        System.out.println(i); 
    } 
    
    /**
     * 测试return语句与finally块的执行顺序
     * 该方法演示了在try块中有return语句但finally块仍会执行的情况
     * @return 返回整数值
     */
    private int testReturn1() { 
        int i = 1; // 初始化变量i为1
        try { 
            i++; // i自增，此时i=2
            System.out.println("try:" + i); // 打印try块中的i值，输出"try:2"
            return i; // 在try块中返回i的值(此时i=2)，但return语句并不会立即执行，会先执行finally块
        } finally { 
            i++; // finally块中i再次自增，此时i=3
            System.out.println("finally:" + i); // 打印finally块中的i值，输出"finally:3"
            // 注意：即使finally块中修改了i的值，也不会影响已经确定的返回值
            // 因为return操作在try块中已经"拍摄"了要返回的值
        } 
    } 
}
/*
程序执行流程和输出结果说明：
1. main方法中创建Return1对象并调用testReturn1方法
2. testReturn1方法中i初始化为1
3. 进入try块，i自增为2，打印"try:2"
4. 遇到return语句，但不立即返回，而是先执行finally块
5. 进入finally块，i自增为3，打印"finally:3"
6. finally块执行完毕后，才真正执行return语句，返回之前拍摄的值2
7. 但是在这种特殊情况下，由于返回的是基本数据类型int，
   finally块中的修改不会影响已确定的返回值
最终输出：
try:2
finally:3
2
 */